<?php
 //$debug_SQL=1;
 $millesime = millesime (0) ;
 @Set_Time_Limit (0) ;
 $max_recursif = 2000 ;
 $chaine_pointeur = "->" ;
 $type_champ_auto = "INT(11) AUTO_INCREMENT PRIMARY KEY" ;
 $type_donnees = "TEXT" ;
 $attribut_donnees = "NOT NULL" ;
 
 $struc_emp_sts [0][0][0] = 7 ; // Nombre de pointeurs
 $struc_emp_sts [0][0][1] = $chaine_pointeur ; // Chaine de pointage
 
 // UAJ
 $struc_emp_sts [1][0][0] = 3 ; // Nombre d'elements
 $struc_emp_sts [1][0][1] = "EDT_STS".$chaine_pointeur."PARAMETRES" ; // Pointeur
 $struc_emp_sts [1][0][2] = "PARAMETRES" ; // Nom de la table precedee par $sql_sconet
 $struc_emp_sts [1][0][3] = 0 ; // Enregistrer Attributs du pointeur : 0=Non,>=1=Oui et nombre d'attributs a enregistrer

 $struc_emp_sts [1][1][0] = 1 ; // Type element : 0=Attribut,1=Donnee
 $struc_emp_sts [1][1][1] = "UAJ" ; // element (avec -> pointeur)
 $struc_emp_sts [1][1][2] = "UAJ" ; // Nom du champ destination
 
 $struc_emp_sts [1][2][0] = 1 ; // Type element : 0=Attribut,1=Donnee
 $struc_emp_sts [1][2][1] = "ANNEE_SCOLAIRE" ; // element (avec -> pointeur)
 $struc_emp_sts [1][2][2] = "ANNEE_SCOLAIRE" ; // Nom du champ destination
 
 $struc_emp_sts [1][3][0] = 1 ; // Type element : 0=Attribut,1=Donnee
 $struc_emp_sts [1][3][1] = "APPLICATION_SOURCE" ; // element (avec -> pointeur)
 $struc_emp_sts [1][3][2] = "APPLICATION_SOURCE" ; // Nom du champ destination
 
 // DONNEES -> HORAIRES
 $struc_emp_sts [2][0][0] = 2 ; // Nombre d'elements
 $struc_emp_sts [2][0][1] = "EDT_STS".$chaine_pointeur."DONNEES".$chaine_pointeur."HORAIRES".$chaine_pointeur."HORAIRE" ;
 $struc_emp_sts [2][0][2] = "HORAIRES" ; // Nom de la table precedee par $sql_sconet
 $struc_emp_sts [2][0][3] = 1 ; // Enregistrer Attributs du pointeur : 0=Non,>=1=Oui et nombre d'attributs a enregistrer
 $struc_emp_sts [2][0][4] = "JOUR" ; // Nom de l'attribut a enregistrer
 $struc_emp_sts [2][0][5] = "JOUR" ; // Nom du champ pour l'attribut

 $struc_emp_sts [2][1][0] = 1 ; // Type element : 0=Attribut,1=Donnee
 $struc_emp_sts [2][1][1] = "DEBUT_COURS" ; // element (avec -> pointeur)
 $struc_emp_sts [2][1][2] = "DEBUT_COURS" ; // Nom du champ destination
 
 $struc_emp_sts [2][2][0] = 1 ; // Type element : 0=Attribut,1=Donnee
 $struc_emp_sts [2][2][1] = "FIN_COURS" ; // element (avec -> pointeur)
 $struc_emp_sts [2][2][2] = "FIN_COURS" ; // Nom du champ destination
 
 // DONNEES -> ALTERNANCES
 $struc_emp_sts [3][0][0] = 2 ; // Nombre d'elements
 $struc_emp_sts [3][0][1] = "EDT_STS".$chaine_pointeur."DONNEES".$chaine_pointeur."ALTERNANCES".$chaine_pointeur."ALTERNANCE" ;
 $struc_emp_sts [3][0][2] = "ALTERNANCES" ; // Nom de la table precedee par $sql_sconet
 $struc_emp_sts [3][0][3] = 1 ; // Enregistrer Attributs du pointeur : 0=Non,>=1=Oui et nombre d'attributs a enregistrer
 $struc_emp_sts [3][0][4] = "CODE" ; // Nom de l'attribut a enregistrer
 $struc_emp_sts [3][0][5] = "CODE" ; // Nom du champ pour l'attribut

 $struc_emp_sts [3][1][0] = 1 ; // Type element : 0=Attribut,1=Donnee
 $struc_emp_sts [3][1][1] = "LIBELLE_COURT" ; // element (avec -> pointeur)
 $struc_emp_sts [3][1][2] = "LIBELLE_COURT" ; // Nom du champ destination
 
 $struc_emp_sts [3][2][0] = 1 ; // Type element : 0=Attribut,1=Donnee
 $struc_emp_sts [3][2][1] = "LIBELLE_LONG" ; // element (avec -> pointeur)
 $struc_emp_sts [3][2][2] = "LIBELLE_LONG" ; // Nom du champ destination
 
 // DONNEES -> SALLES COURS
 $struc_emp_sts [4][0][0] = 2 ; // Nombre d'elements
 $struc_emp_sts [4][0][1] = "EDT_STS".$chaine_pointeur."SALLES_COURS".$chaine_pointeur."SALLE_COURS" ;
 $struc_emp_sts [4][0][2] = "SALLES_COURS" ; // Nom de la table precedee par $sql_sconet
 $struc_emp_sts [4][0][3] = 1 ; // Enregistrer Attributs du pointeur : 0=Non,>=1=Oui et nombre d'attributs a enregistrer
 $struc_emp_sts [4][0][4] = "CODE" ; // Nom de l'attribut a enregistrer
 $struc_emp_sts [4][0][5] = "CODE" ; // Nom du champ pour l'attribut

 $struc_emp_sts [4][1][0] = 1 ; // Type element : 0=Attribut,1=Donnee
 $struc_emp_sts [4][1][1] = "GROUPE_SALLE" ; // element (avec -> pointeur)
 $struc_emp_sts [4][1][2] = "GROUPE_SALLE" ; // Nom du champ destination
 
 $struc_emp_sts [4][2][0] = 1 ; // Type element : 0=Attribut,1=Donnee
 $struc_emp_sts [4][2][1] = "LOCALISATION" ; // element (avec -> pointeur)
 $struc_emp_sts [4][2][2] = "LOCALISATION" ; // Nom du champ destination
 
 // DONNEES -> STRUCTURE -> DIVISIONS -> DIVISION
 $struc_emp_sts [5][0][0] = 0 ; // Nombre d'elements
 $struc_emp_sts [5][0][1] = "EDT_STS".$chaine_pointeur."DONNEES".$chaine_pointeur."STRUCTURE".$chaine_pointeur."DIVISIONS".$chaine_pointeur."DIVISION" ;
 $struc_emp_sts [5][0][2] = "DIVISIONS" ; // Nom de la table precedee par $sql_sconet
 $struc_emp_sts [5][0][3] = 1 ; // Enregistrer Attributs du pointeur : 0=Non,>=1=Oui et nombre d'attributs a enregistrer
 $struc_emp_sts [5][0][4] = "CODE" ; // Nom de l'attribut a enregistrer
 $struc_emp_sts [5][0][5] = "CODE" ; // Nom du champ pour l'attribut

 // DONNEES -> INDIVIDUS -> INDIVIDU
 $struc_emp_sts [6][0][0] = 0 ; // Nombre d'elements
 $struc_emp_sts [6][0][1] = "EDT_STS".$chaine_pointeur."INDIVIDUS".$chaine_pointeur."INDIVIDU" ;
 $struc_emp_sts [6][0][2] = "INDIVIDUS" ; // Nom de la table precedee par $sql_sconet
 $struc_emp_sts [6][0][3] = 1 ; // Enregistrer Attributs du pointeur : 0=Non,>=1=Oui et nombre d'attributs a enregistrer
 $struc_emp_sts [6][0][4] = "ID" ; // Nom de l'attribut a enregistrer
 $struc_emp_sts [6][0][5] = "ID" ; // Nom du champ pour l'attribut
 
 // DONNEES -> GROUPES -> GROUPE
 $struc_emp_sts [7][0][0] = 3 ; // Nombre d'elements
 $struc_emp_sts [7][0][1] = "EDT_STS".$chaine_pointeur."DONNEES".$chaine_pointeur."GROUPES".$chaine_pointeur."GROUPE" ;
 $struc_emp_sts [7][0][2] = "GROUPES" ; // Nom de la table precedee par $sql_sconet
 $struc_emp_sts [7][0][3] = 1 ; // Enregistrer Attributs du pointeur : 0=Non,>=1=Oui et nombre d'attributs a enregistrer
 $struc_emp_sts [7][0][4] = "CODE" ; // Nom de l'attribut a enregistrer
 $struc_emp_sts [7][0][5] = "CODE" ; // Nom du champ pour l'attribut

 $struc_emp_sts [7][1][0] = 1 ; // Type element : 0=Attribut,1=Donnee
 $struc_emp_sts [7][1][1] = "LIBELLE_LONG" ; // element (avec -> pointeur)
 $struc_emp_sts [7][1][2] = "LIBELLE_LONG" ; // Nom du champ destination
 
 $struc_emp_sts [7][2][0] = 1 ; // Type element : 0=Attribut,1=Donnee
 $struc_emp_sts [7][2][1] = "EFFECTIF_PREVU" ; // element (avec -> pointeur)
 $struc_emp_sts [7][2][2] = "EFFECTIF_PREVU" ; // Nom du champ destination
 
 $struc_emp_sts [7][3][0] = 1 ; // Type element : 0=Attribut,1=Donnee
 $struc_emp_sts [7][3][1] = "EFFECTIF_MAX_EDT" ; // element (avec -> pointeur)
 $struc_emp_sts [7][3][2] = "EFFECTIF_MAX_EDT" ; // Nom du champ destination
 
 /*
 * Extraction de l'attribut $nom dans la chaine $chaine
 * @param string $nom Nom de l'attribut sans "="
 * @param string $chaine Chaine contenant ou pas l'attribut
 * @return string Contenu de l'attribut
 */
 Function attribut ($nom, $chaine)
  {
   $code = "" ;
   $tmp1 = Explode ($nom."=", $chaine) ;
   If (IsSet ($tmp1 [1]))
    {
     $tmp2 = Explode ("\"", $tmp1 [1]) ;
     $tmp3 = Str_Replace ("'", "\'", $tmp2 [1]) ;
     $code = Str_Replace ("'", "\'", $tmp3) ;
    }
   Return $code ;
  }
 
 /*
 * Extraction d'un champ XML
 * @param string $c Chaine a extraire
 * @param mixed $table Table de pointeurs ou champ a extraire
 * @return array Table extraite
 */
 Function extraction ($c, $table)
  {
   Global $recursif, $max_recursif ;//, $chemin ;
   If (Is_Array ($table) And (SizeOf ($table) > 1))
    {
     $recursif++ ;
     If ($recursif > $max_recursif) { Exit ; }
     $f1 = extraction ($c, $table [0]) ;
     //echo $table [0]."-->".$f1 [0][0]."<br>" ;
     If ($f1 [0][0] > 1)
      {
       $f2 [0][0] = 0 ;
       For ($i = 1 ; $i <= $f1 [0][0] ; $i++)
        {
         $f3 = extraction ($f1 [$i][1], Array_Slice ($table, 1)) ;
         For ($j = 1 ; $j <= $f3 [0][0] ; $j++)
          {
           $f2 [0][0]++ ;
           $f2 [$f2 [0][0]][0] = $f3 [$j][0] ;
           $f2 [$f2 [0][0]][1] = $f3 [$j][1] ;
          }
        }
       Return $f2 ;
      }
     Else
      {
       If (IsSet ($f1 [1][1]))
        {
         $f2 = extraction ($f1 [1][1], Array_Slice ($table, 1)) ;
         Return $f2 ;
        }
       Else { Return Null ; }
      }
    }
   Else
    {
     If (Is_Array ($table)) { $champ = $table [0] ; } Else { $champ = $table ; }
     $c5 [0][0] = 0 ;
     $c5 [0][1] = $champ ;
     //echo $champ."-->".StrPos ($c, "<".$champ)."-->" ;
     //$chemin .= "->".$champ ;
     While (Is_Numeric (StrPos ($c, "<".$champ)))
      {
       // Recherche champ
       $p1 = StrPos ($c, "<".$champ) ;
       $p11 = StrPos ($c, "<".$champ." ") ;
       $p12 = StrPos ($c, "<".$champ.">") ;
       If (($p1 != $p11) And ($p1 != $p12)) { If ($p11) { $p1 = $p11 ; } Else { $p1 = $p12 ; } }
       $p2 = StrPos ($c, "</".$champ.">") ;
       If (!$p2) { $p1 = $p2 = StrPos ($c, "<".$champ."/>") ; }
       $p3 = $p2-$p1 ;
       $c1 = SubStr ($c, $p1, $p3) ;
       // Suite chaine
       $p4 = $p2+StrLen ("</".$champ.">") ;
       $p5 = StrLen ($c)-$p4 ;
       $c = SubStr ($c, $p4, $p5) ;
       // Recherche d'attributs
       $c2 = Explode ("<", $c1) ;
       If (IsSet ($c2 [1]))
        {
         $c3 = Explode (">", $c2 [1]) ;
         If (!StrPos ($c3 [0], "=")) { $c4 = StrLen ("<".$champ.">") ; $c1 = SubStr ($c1, $c4, StrLen ($c1)-$c4) ; $c3 [0] = "" ; }
         Else { $c4 = StrPos ($c1, ">") ; $c1 = SubStr ($c1, $c4+1, StrLen ($c1)-$c4+1) ; }
        }
       Else { $c3 [0] = ""  ; }
       // Enregistrement
       $c5 [0][0]++ ;
       $c5 [$c5 [0][0]][0] = $c3 [0] ; // Attributs
       $c5 [$c5 [0][0]][1] = $c1 ; // Champ
       //echo $c1."-->" ;
      }
     //echo "<br>" ;
     Return $c5 ;
    }
  }

 /*
 * Creation des tables SQL a partir d'une extraction XML
 * @param string $chaine Chaine a extraire
 * @param string $structure_xml Tableau de la structure a appliquer
 */
 Function creation_tables ($chaine, $structure_xml)
  {
   Global $id_sql, $recursif, $sql_sconet, $type_champ_auto, $type_donnees, $attribut_donnees, $table ;
   $chaine_pointeur = $structure_xml [0][0][1] ;
   For ($i = 1 ; $i <= $structure_xml [0][0][0] ; $i++)
    {
     $table [0]++ ;
     $table [$table [0]] = $sql_sconet."_".$structure_xml [$i][0][2] ;
     $requete_destruction = "DROP TABLE ".$sql_sconet."_".$structure_xml [$i][0][2] ;
     $requete_creation = "CREATE TABLE ".$sql_sconet."_".$structure_xml [$i][0][2]." (ID_".$structure_xml [$i][0][2]." ".$type_champ_auto ;
     // Atrtributs
     For ($j = 1 ; $j <= $structure_xml [$i][0][3] ; $j++)
      {
       $requete_creation .= ",".$structure_xml [$i][0][3+$j*2]." ".$type_donnees." ".$attribut_donnees ;
      }
     // Champs avec attributs et donnees
     For ($j = 1 ; $j <= $structure_xml [$i][0][0] ; $j++)
      {
       $requete_creation .= "," ;
       If ($structure_xml [$i][$j][0] == 1) { $requete_creation .= $structure_xml [$i][$j][2] ; } Else { $requete_creation .= $structure_xml [$i][$j][3] ; }
       $requete_creation .= " ".$type_donnees." ".$attribut_donnees ;
      }
     $requete_creation .= ")" ;
     $requete_insertion = "INSERT INTO ".$sql_sconet."_".$structure_xml [$i][0][2]." VALUES " ;
     $recursif = 0 ; 
     $tableau1 = extraction ($chaine, Explode ($chaine_pointeur, $structure_xml [$i][0][1])) ;
     //echo $structure_xml [$i][0][1]."->".$tableau1 [0][0]."<br>" ;
     For ($j = 1 ; $j <= $tableau1 [0][0] ; $j++)
      {
       If ($j > 1) { $requete_insertion .= "," ; }
       $requete_insertion .= "(''" ;
       // Attributs
       If ($structure_xml [$i][0][3] > 0)
        {
         For ($k = 1 ; $k <= $structure_xml [$i][0][3] ; $k++)
          {
           $requete_insertion .= ",'".attribut ($structure_xml [$i][0][2+$k*2], $tableau1 [$j][0])."'" ;
          }
        }
       // Champs
       For ($k = 1 ; $k <= $structure_xml [$i][0][0] ; $k++)
        {
         $recursif = 0 ; 
         $tableau2 = extraction ($tableau1 [$j][1], Explode ($chaine_pointeur, $structure_xml [$i][$k][1])) ;
         If ($structure_xml [$i][$k][0] == 0)
          {
           // Attribut
           $requete_insertion .= ",'".attribut ($structure_xml [$i][$k][2], $tableau2 [1][0])."'" ;
          }
         Else
          {
           // Donnee
           $requete_insertion .= ",'" ;
           If (IsSet ($tableau2 [1][1])) { $requete_insertion .= Str_Replace ("'", "\'", $tableau2 [1][1]) ; }
           $requete_insertion .= "'" ;
          }
        }
       $requete_insertion .= ")" ;
      }
     //echo "Cr&eacute;ation de la table <b>".$sql_sconet."_".$structure_xml [$i][0][2]."</b>->".$tableau1 [0][0]."<br>" ;
     //echo $requete_creation."<hr>" ;
     //echo $requete_insertion."<hr>" ;
     $ok = SQL_commande ($requete_destruction, $id_sql) ;
     $ok = SQL_commande ($requete_creation, $id_sql) ;
     $ok = SQL_commande ($requete_insertion, $id_sql) ;
    }
  }
 
 // Allons-y
 For ($i = 1 ; $i <= $imp_abs_xml [0] ; $i++)
  {
   If ($imp_abs_xml [$i] != "")
    {
     $ok_fichier = 0 ;
     If ($_FILES ["nom_".$i]["error"] == 0)
      {
       If (Is_UpLoaded_File ($_FILES ["nom_".$i]["tmp_name"]))
        {
	 $chaine = @Implode ("", @File ($_FILES ["nom_".$i]["tmp_name"])) ;
	 
	 $table [0] = 0 ;
         creation_tables ($chaine, $struc_emp_sts) ;
 
         // Gestion des semaines d'alternances
         // ALTERNANCES
         $recursif = 0 ;
         
	 // Traitement ALTERNANCES
         $table [0]++ ;
         $table [$table [0]] = $sql_sconet."_ALTERNANCES_SEMAINES" ;
         $requete_destruction = "DROP TABLE ".$sql_sconet."_ALTERNANCES_SEMAINES" ;
         $requete_creation = "CREATE TABLE ".$sql_sconet."_ALTERNANCES_SEMAINES (ID_ALTERNANCE_SEMAINE ".$type_champ_auto."," ;
         $requete_creation .= "CODE ".$type_donnees." ".$attribut_donnees."," ;
         $requete_creation .= "DATE_DEBUT ".$type_donnees." ".$attribut_donnees.")" ;
         $ok = SQL_commande ($requete_destruction, $id_sql) ;
         $ok = SQL_commande ($requete_creation, $id_sql) ;
	 // Traitement SEMAINES d'ALTERNANCES
         $tableau1 = extraction ($chaine, Array ("EDT_STS","DONNEES","ALTERNANCES","ALTERNANCE")) ;
         For ($i = 1 ; $i <= $tableau1 [0][0] ; $i++)
          {
           $ok = 0 ;
           // Recuperation du CODE
           $code = attribut ("CODE", $tableau1 [$i][0]) ;
	   $tableau2 = extraction ($tableau1 [$i][1], Array ("SEMAINES")) ;
           For ($j = 1 ; $j <= $tableau2 [0][0] ; $j++)
            {
	     $tableau3 = extraction ($tableau2 [$j][1], Array ("DATE_DEBUT_SEMAINE")) ;
	     $requete_insertion = "INSERT INTO ".$sql_sconet."_ALTERNANCES_SEMAINES VALUES " ;
	     For ($k = 1 ; $k <= $tableau3 [0][0] ; $k++)
              {
	       If ($ok == 1) { $requete_insertion .= "," ; }
	       $requete_insertion .= "('','".$code."','".$tableau3 [$k][1]."')" ;
               $ok = 1 ;
	      }
	     If ($ok == 1) { $ok = SQL_commande ($requete_insertion, $id_sql) ; }
	    }
	  }
	 
	 // Traitement INDEMNITES
         $table [0]++ ;
         $table [$table [0]] = $sql_sconet."_INDIVIDUS_INDEMNITES" ;
         $requete_destruction = "DROP TABLE ".$sql_sconet."_INDIVIDUS_INDEMNITES" ;
         $requete_creation = "CREATE TABLE ".$sql_sconet."_INDIVIDUS_INDEMNITES (ID_INDIVIDU_INDEMNITE ".$type_champ_auto."," ;
         $requete_creation .= "ID ".$type_donnees." ".$attribut_donnees."," ;
         $requete_creation .= "CODE_STRUCTURE ".$type_donnees." ".$attribut_donnees."," ;
	 $requete_creation .= "MEFSTAT4 ".$type_donnees." ".$attribut_donnees.")" ;
         $ok = SQL_commande ($requete_destruction, $id_sql) ;
         $ok = SQL_commande ($requete_creation, $id_sql) ;
	 // Traitement INDEMNITES d'INDIVIDUS
         $tableau1 = extraction ($chaine, Array ("EDT_STS","DONNEES","INDIVIDUS","INDIVIDU")) ;
	 $requete_insertion = "INSERT INTO ".$sql_sconet."_INDIVIDUS_INDEMNITES VALUES " ;
	 $ok = 0 ;
         For ($i = 1 ; $i <= $tableau1 [0][0] ; $i++)
          {
           // Recuperation de l'ID
           $id = attribut ("ID", $tableau1 [$i][0]) ;
           $tableau2 = extraction ($tableau1 [$i][1], Array ("INDEMNITES","INDEMNITE","CODE_STRUCTURE")) ;
	   $tableau3 = extraction ($tableau1 [$i][1], Array ("INDEMNITES","INDEMNITE","MEFSTAT4")) ;
	   If ($ok == 1) { $requete_insertion .= "," ; }
	   $requete_insertion .= "('','".$id."','".$tableau2 [1][1]."','".$tableau3 [1][1]."')" ;
           $ok = 1 ;
	  }
	 If ($ok == 1) { $ok = SQL_commande ($requete_insertion, $id_sql) ; }
	 
	 // Traitement SERVICES
         $table [0]++ ;
         $table [$table [0]] = $sql_sconet."_SERVICES_SERVICE" ;
         $requete_destruction = "DROP TABLE ".$sql_sconet."_SERVICES_SERVICE" ;
         $requete_creation = "CREATE TABLE ".$sql_sconet."_SERVICES_SERVICE (ID_SERVICE_SERVICE ".$type_champ_auto."," ;
	 $requete_creation .= "CODE ".$type_donnees." ".$attribut_donnees."," ;
         $requete_creation .= "CODE_MATIERE ".$type_donnees." ".$attribut_donnees."," ;
         $requete_creation .= "CODE_MOD_COURS ".$type_donnees." ".$attribut_donnees."," ;
	 $requete_creation .= "HEURES_STRUCTURE ".$type_donnees." ".$attribut_donnees."," ;
	 $requete_creation .= "CO_ENS ".$type_donnees." ".$attribut_donnees."," ;
	 $requete_creation .= "ENSEIGNANT_TYPE ".$type_donnees." ".$attribut_donnees."," ;
         $requete_creation .= "ENSEIGNANT_ID ".$type_donnees." ".$attribut_donnees."," ;
	 $requete_creation .= "HEURES_AGENT ".$type_donnees." ".$attribut_donnees."," ;
	 $requete_creation .= "CODE_ALTERNANCE ".$type_donnees." ".$attribut_donnees."," ;
	 $requete_creation .= "JOUR ".$type_donnees." ".$attribut_donnees."," ;
	 $requete_creation .= "HEURE_DEBUT ".$type_donnees." ".$attribut_donnees."," ;
	 $requete_creation .= "DUREE ".$type_donnees." ".$attribut_donnees."," ;
	 $requete_creation .= "CODE_SALLE ".$type_donnees." ".$attribut_donnees.")" ;
         $ok = SQL_commande ($requete_destruction, $id_sql) ;
         $ok = SQL_commande ($requete_creation, $id_sql) ;
	 $ok = 0 ;
	 $requete_insertion = "INSERT INTO ".$sql_sconet."_SERVICES_SERVICE VALUES " ;
	 $tableau0 = extraction ($chaine, Array ("EDT_STS","DONNEES","STRUCTURE","DIVISIONS","DIVISION")) ;
	 For ($i0 = 1 ; $i0 <= $tableau0 [0][0] ; $i0++)
          {
	   // Recuperation attributs
	   $code = attribut ("CODE", $tableau0 [$i0][0]) ;
	   // Traitement SERVICE des SERVICES
	   $tableau1 = extraction ($tableau0 [$i0][1], Array ("SERVICES","SERVICE")) ;
           For ($i1 = 1 ; $i1 <= $tableau1 [0][0] ; $i1++)
            {
             // Recuperation attributs
             $code_mat = attribut ("CODE_MATIERE", $tableau1 [$i1][0]) ;
	     $code_mod_cours = attribut ("CODE_MOD_COURS", $tableau1 [$i1][0]) ;
             $tableau2 = extraction ($tableau1 [$i1][1], Array ("HEURES_STRUCTURE")) ;
	     $tableau3 = extraction ($tableau1 [$i1][1], Array ("CO_ENS")) ;
	     $tableau4 = extraction ($tableau1 [$i1][1], Array ("ENSEIGNANTS","ENSEIGNANT")) ;
	     For ($j = 1 ; $j <= $tableau4 [0][0] ; $j++)
              {
	       // Recuperation attributs
               $type = attribut ("TYPE", $tableau4 [$j][0]) ;
	       $id = attribut ("ID", $tableau4 [$j][0]) ;
	       $tableau5 = extraction ($tableau4 [$j][1], Array ("HEURES_AGENT")) ;
	       $tableau6 = extraction ($tableau4 [$j][1], Array ("COURS_RATTACHES","COURS")) ;
	       For ($k = 1 ; $k <= $tableau6 [0][0] ; $k++)
                {
	         $tableau7 = extraction ($tableau6 [$k][1], Array ("CODE_ALTERNANCE")) ;
	         $tableau8 = extraction ($tableau6 [$k][1], Array ("JOUR")) ;
	         $tableau9 = extraction ($tableau6 [$k][1], Array ("HEURE_DEBUT")) ;
	         $tableau10 = extraction ($tableau6 [$k][1], Array ("DUREE")) ;
	         $tableau11 = extraction ($tableau6 [$k][1], Array ("CODE_SALLE")) ;
	         If ($ok == 1) { $requete_insertion .= "," ; }
	         $requete_insertion .= "('','".$code."','".$code_mat."','".$code_mod_cours."','".$tableau2 [1][1]."','".$tableau3 [1][1]."'," ;
	         $requete_insertion .= "'".$type."','".$id."','".$tableau5 [1][1]."','".$tableau7 [1][1]."','".$tableau8 [1][1]."'," ;
		 $requete_insertion .= "'".$tableau9 [1][1]."','".$tableau10 [1][1]."','".$tableau11 [1][1]."')" ;
                 $ok = 1 ;
		}
	      }
	    }
	  }
	 If ($ok == 1) { $ok = SQL_commande ($requete_insertion, $id_sql) ; }
	 
	 // Traitement GROUPES
         $table [0]++ ;
         $table [$table [0]] = $sql_sconet."_GROUPES" ;
         $requete_destruction = "DROP TABLE ".$sql_sconet."_GROUPES" ;
         $requete_creation = "CREATE TABLE ".$sql_sconet."_GROUPES (ID_GROUPE ".$type_champ_auto."," ;
	 $requete_creation .= "CODE ".$type_donnees." ".$attribut_donnees."," ;
         $requete_creation .= "LIBELLE_LONG ".$type_donnees." ".$attribut_donnees."," ;
         $requete_creation .= "EFFECTIF_PREVU ".$type_donnees." ".$attribut_donnees."," ;
	 $requete_creation .= "EFFECTIF_MAX_EDT ".$type_donnees." ".$attribut_donnees."," ;
	 $requete_creation .= "DIV_CODE ".$type_donnees." ".$attribut_donnees."," ;
	 $requete_creation .= "DIV_EFFECTIF_PREVU ".$type_donnees." ".$attribut_donnees.")" ;
         $ok = SQL_commande ($requete_destruction, $id_sql) ;
         $ok = SQL_commande ($requete_creation, $id_sql) ;
	 
	 $table [0]++ ;
         $table [$table [0]] = $sql_sconet."_GROUPES_SERVICES" ;
         $requete_destruction = "DROP TABLE ".$sql_sconet."_GROUPES_SERVICES" ;
         $requete_creation = "CREATE TABLE ".$sql_sconet."_GROUPES_SERVICES (ID_GROUPE_SERVICE ".$type_champ_auto."," ;
	 $requete_creation .= "CODE ".$type_donnees." ".$attribut_donnees."," ;
         $requete_creation .= "CODE_MATIERE ".$type_donnees." ".$attribut_donnees."," ;
         $requete_creation .= "CODE_MOD_COURS ".$type_donnees." ".$attribut_donnees."," ;
	 $requete_creation .= "HEURES_STRUCTURE ".$type_donnees." ".$attribut_donnees."," ;
	 $requete_creation .= "CO_ENS ".$type_donnees." ".$attribut_donnees."," ;
	 $requete_creation .= "ENSEIGNANT_TYPE ".$type_donnees." ".$attribut_donnees."," ;
         $requete_creation .= "ENSEIGNANT_ID ".$type_donnees." ".$attribut_donnees."," ;
	 $requete_creation .= "HEURES_AGENT ".$type_donnees." ".$attribut_donnees."," ;
	 $requete_creation .= "CODE_ALTERNANCE ".$type_donnees." ".$attribut_donnees."," ;
	 $requete_creation .= "JOUR ".$type_donnees." ".$attribut_donnees."," ;
	 $requete_creation .= "HEURE_DEBUT ".$type_donnees." ".$attribut_donnees."," ;
	 $requete_creation .= "DUREE ".$type_donnees." ".$attribut_donnees."," ;
	 $requete_creation .= "CODE_SALLE ".$type_donnees." ".$attribut_donnees.")" ;
         $ok = SQL_commande ($requete_destruction, $id_sql) ;
         $ok = SQL_commande ($requete_creation, $id_sql) ;
	 
	 $ok1 = 0 ;
	 $requete_insertion1 = "INSERT INTO ".$sql_sconet."_GROUPES VALUES " ;
	 $requete_insertion2 = "INSERT INTO ".$sql_sconet."_GROUPES_SERVICES VALUES " ;
	 $tableau0 = extraction ($chaine, Array ("EDT_STS","DONNEES","STRUCTURE","GROUPES","GROUPE")) ;
	 For ($i0 = 1 ; $i0 <= $tableau0 [0][0] ; $i0++)
          {
	   // Recuperation attributs
	   $code = attribut ("CODE", $tableau0 [$i0][0]) ;
	   $tableau1 = extraction ($tableau0 [$i0][1], Array ("LIBELLE_LONG")) ;
	   $tableau2 = extraction ($tableau0 [$i0][1], Array ("EFFECTIF_PREVU")) ;
	   $tableau3 = extraction ($tableau0 [$i0][1], Array ("EFFECTIF_MAX_EDT")) ;
	   // Groupe
	   $tableau4 = extraction ($tableau0 [$i0][1], Array ("DIVISIONS_APPARTENANCE","DIVISION_APPARTENANCE")) ;
           For ($i1 = 1 ; $i1 <= $tableau4 [0][0] ; $i1++)
            {
             // Recuperation attributs
             $code_div = attribut ("CODE", $tableau4 [$i1][0]) ;
	     $tableau5 = extraction ($tableau4 [$i1][1], Array ("EFFECTIF_PREVU")) ;
	     If ($ok1 == 1) { $requete_insertion1 .= "," ; }
	     $requete_insertion1 .= "('','".$code."','".$tableau1 [1][1]."','".$tableau2 [1][1]."'," ;
	     $requete_insertion1 .= "'".$tableau3 [1][1]."','".$code_div."','".$tableau5 [1][1]."')" ;
             $ok1 = 1 ;
	    }
	   // Services
	   $tableau6 = extraction ($tableau0 [$i0][1], Array ("SERVICES","SERVICE")) ;
           For ($i1 = 1 ; $i1 <= $tableau6 [0][0] ; $i1++)
            {
             // Recuperation attributs
             $code_mat = attribut ("CODE_MATIERE", $tableau6 [$i1][0]) ;
	     $code_mod_cours = attribut ("CODE_MOD_COURS", $tableau6 [$i1][0]) ;
             $tableau7 = extraction ($tableau6 [$i1][1], Array ("HEURES_STRUCTURE")) ;
	     $tableau8 = extraction ($tableau6 [$i1][1], Array ("CO_ENS")) ;
	     $tableau9 = extraction ($tableau6 [$i1][1], Array ("ENSEIGNANTS","ENSEIGNANT")) ;
	     For ($j = 1 ; $j <= $tableau9 [0][0] ; $j++)
              {
	       // Recuperation attributs
               $type = attribut ("TYPE", $tableau9 [$j][0]) ;
	       $id = attribut ("ID", $tableau9 [$j][0]) ;
	       $tableau10 = extraction ($tableau9 [$j][1], Array ("HEURES_AGENT")) ;
	       $tableau11 = extraction ($tableau9 [$j][1], Array ("COURS_RATTACHES","COURS")) ;
	       For ($k = 1 ; $k <= $tableau11 [0][0] ; $k++)
                {
	         $tableau12 = extraction ($tableau11 [$k][1], Array ("CODE_ALTERNANCE")) ;
	         $tableau13 = extraction ($tableau11 [$k][1], Array ("JOUR")) ;
	         $tableau14 = extraction ($tableau11 [$k][1], Array ("HEURE_DEBUT")) ;
	         $tableau15 = extraction ($tableau11 [$k][1], Array ("DUREE")) ;
	         $tableau16 = extraction ($tableau11 [$k][1], Array ("CODE_SALLE")) ;
	         If ($ok2 == 1) { $requete_insertion2 .= "," ; }
	         $requete_insertion2 .= "('','".$code."','".$code_mat."','".$code_mod_cours."','".$tableau7 [1][1]."','".$tableau8 [1][1]."'," ;
	         $requete_insertion2 .= "'".$type."','".$id."','".$tableau10 [1][1]."','".$tableau12 [1][1]."','".$tableau13 [1][1]."'," ;
		 $requete_insertion2 .= "'".$tableau14 [1][1]."','".$tableau15 [1][1]."','".$tableau16 [1][1]."')" ;
                 $ok2 = 1 ;
		}
	      }
	    }
	  }
	 If ($ok1 == 1) { $ok = SQL_commande ($requete_insertion1, $id_sql) ; }
	 If ($ok2 == 1) { $ok = SQL_commande ($requete_insertion2, $id_sql) ; }
         $ok_fichier = 1 ;
        }
      }
     // Traitement des erreurs de telechargement eventuelles
     If ($ok_fichier == 0)
      {
       Switch ((integer)$_FILES ["nom_".$i]["error"])
        {
          Case 1 : $message = "Le param&egrave;tre <i>upload_max_filesize</i> dans <b>php.ini</b> est trop petit." ; Break ;
          Case 2 : $message = "Le param&egrave;tre HTML, <i>MAX_FILE_SIZE</i> est trop petit." ; Break ;
          Case 3 : $message = "Le transfert du fichier ne s'est pas effectu&eacute; dans sa totalit&eacute;." ; Break ;
          Case 4 : $message = "Aucun transfert de fichier ne s'est effectu&eacute;." ; Break ;
         Default : $message = "Erreur lors du t&eacute;l&eacute;chargement du fichier : Corrompu ??" ; Break ;
        }
      }
    }
  }
 
 // Traitement des donnees
 If ($ok_fichier == 1)
  {
   // Verification etablissement scolaire et annee
   $verif = SQL_commande ("SELECT p.UAJ,p.ANNEE_SCOLAIRE,e.id_etablissement FROM ".$sql_sconet."_PARAMETRES p,etablissements e WHERE p.UAJ=e.numero AND e.millesime='".$millesime."'", $id_sql) ;
   If (SQL_nbr_lignes ($verif) == 1)
    {
     $vrf = SQL_ligne_suivante ($verif) ;
     If ($vrf [1] == $millesime)
      {
       // ================================
       //  Traitement du calendrier
       // ================================
       // Mise a plat du calendrier
       $ok = SQL_commande ("DELETE FROM abs_calendrier", $id_sql) ;
       $requete = "INSERT INTO abs_calendrier (date,ouvrable,semaine) VALUES " ;
       $ok = 0 ;
       $semaine = 0 ;
       $semaine_ouvrable = 0 ;
       $ouvrable = 0 ;
       For ($i = 1 ; $i <= $annee_scolaire [0][0] ; $i++)
        {
	 $annee = ($millesime+$annee_scolaire [$i][2]) ;  If ($annee < 10) { $annee = "0".$annee ; }
	 For ($j = $annee_scolaire [$i][0] ; $j <= $annee_scolaire [$i][1] ; $j++)
          {
	   $mois = $j ; If ($mois < 10) { $mois = "0".$mois ; }
	   For ($k = 1 ; $k <= 31 ; $k++)
            {
	     $jour = $k ;  If ($jour < 10) { $jour = "0".$jour ; }
	     If (CheckDate ($mois, $jour, $annee))
	      {
	       $num_jour = Date ("w", MkTime (0,0,0,$mois,$jour,$annee)) ;
	       If ($num_jour == 1)
	        {
		 $semaine++ ;
		 $jo = SQL_commande ("SELECT DATE_DEBUT FROM ".$sql_sconet."_ALTERNANCES_SEMAINES WHERE DATE_DEBUT='".$annee."-".$mois."-".$jour."' LIMIT 1", $id_sql) ;
		 If (SQL_nbr_lignes ($jo) == 1) { $semaine_ouvrable = $ouvrable = 1 ; } Else { $semaine_ouvrable = $ouvrable = 0 ; }
		}
	       Else
	        {
		 $jo = SQL_commande ("SELECT id_abs_jo FROM abs_jo WHERE numero='".$num_jour."' LIMIT 1", $id_sql) ;
		 If (SQL_nbr_lignes ($jo) == 1)
		  {
		   If ($semaine_ouvrable == 1) { $ouvrable = 1 ; } Else { $ouvrable = 0 ; }
		  }
		 Else { $ouvrable = 0 ; }
		}
	       If ($ok == 1) { $requete .= "," ; }
	       $requete .= "('".$annee."-".$mois."-".$jour."','".$ouvrable."','".$semaine."')" ;
	       $ok = 1 ;
	      }
	    }
	  }
	}
       If ($ok == 1) { $ok = SQL_commande ($requete, $id_sql) ; }
       
       // ================================
       //  Traitement des validites
       // ================================
       $validites = SQL_commande ("SELECT CODE,LIBELLE_LONG,LIBELLE_COURT FROM ".$sql_sconet."_ALTERNANCES ORDER BY CODE", $id_sql) ;
       $nbr_val = SQL_nbr_lignes ($validites) ;
       For ($i = 0 ; $i < $nbr_val ; $i++)
        {
	 $validite = SQL_ligne_suivante ($validites) ;
	 $semaines = SQL_commande ("SELECT c.semaine FROM ".$sql_sconet."_ALTERNANCES_SEMAINES s,abs_calendrier c WHERE s.CODE='".$validite [0]."' AND c.date=s.DATE_DEBUT", $id_sql) ;
	 $nbr_sem = SQL_nbr_lignes ($semaines) ;
	 $requete_entete = "INSERT INTO abs_validites (code,nom_long,nom_court,numero," ;
	 $requete_valeur = " VALUES ('".$validite [0]."','".$validite [1]."','".$validite [2]."','".($i+1)."'," ;
	 For ($j = 0 ; $j < $nbr_sem ; $j++)
          {
	   $semaine = SQL_ligne_suivante ($semaines) ;
	   If ($j > 0) { $requete_entete .= "," ; $requete_valeur .= "," ; }
	   $requete_entete .= "sem" ;
	   If ($semaine [0] < 10) { $requete_entete .= "0" ; }
	   $requete_entete .= $semaine [0] ;
	   $requete_valeur .= "'1'" ;
	  }
	 $ok = SQL_commande ($requete_entete.")".$requete_valeur.")", $id_sql) ;
	}
       
       // ================================
       //  Traitement des SALLES DE COURS
       // ================================
       $salles_existantes = SQL_commande ("SELECT a.nom FROM abs_salles a,".$sql_sconet."_SALLES_COURS b WHERE a.nom=b.CODE", $id_sql) ;
       $nbr_se = SQL_nbr_lignes ($salles_existantes) ;
       If ($nbr_se > 0)
        {
         $exclure = "" ;
         For ($i = 0 ; $i < $nbr_se ; $i++)
          {
           $salle_existe = SQL_ligne_suivante ($salles_existantes) ;
           If ($i > 0) { $exclure .= " AND " ; }
           $exclure .= "CODE!='".$salle_existe [0]."'" ;
          }
         $requete = "SELECT ID_SALLES_COURS,CODE FROM ".$sql_sconet."_SALLES_COURS WHERE ".$exclure." ORDER BY CODE" ;
        }
       Else { $requete = "SELECT ID_SALLES_COURS,CODE FROM ".$sql_sconet."_SALLES_COURS ORDER BY CODE" ; }
       $salles = SQL_commande ($requete, $id_sql) ;
       $nbr_s = SQL_nbr_lignes ($salles) ;
       If ($nbr_s > 0)
        {
         $requete = "INSERT INTO abs_salles (nom) VALUES " ;
         For ($i = 0 ; $i < $nbr_s ; $i++)
          {
           $salle = SQL_ligne_suivante ($salles) ;
           If ($i > 0) { $requete .= "," ; }
           $requete .= "('".$salle [1]."')" ;
          }
         $ok = SQL_commande ($requete, $id_sql) ;
        }
       
       // ================================
       //  Traitement de l'EDT
       // ================================
       $edt = SQL_commande ("SELECT * FROM ".$sql_sconet."_SERVICES_SERVICE ORDER BY CODE,JOUR,HEURE_DEBUT", $id_sql) ;
       $nbr_edt = SQL_nbr_lignes ($edt) ;
       $requete = "INSERT INTO abs_edt (professeur,numen_prof,discipline,code_disc,classe,code_classe,abs_groupe,jour,abs_horaire,abs_salle,abs_validite) VALUES " ;
       $ok = 0 ;
       For ($i = 0 ; $i < $nbr_edt ; $i++)
        {
	 $et = SQL_tableau_associatif ($edt, "") ;
         // Recherche enseignants
	 $ens = SQL_commande ("SELECT id_utilisateur,numen FROM utilisateurs WHERE numen='".$et ["ENSEIGNANT_TYPE"].$et ["ENSEIGNANT_ID"]."' LIMIT 1", $id_sql) ;
	 If (SQL_nbr_lignes ($ens) == 1)
	  {
	   $enseignant = SQL_ligne_suivante ($ens) ;
	   // Recherche discipline
	   $dis = SQL_commande ("SELECT id_discipline,code FROM disciplines WHERE code='".$et ["CODE_MATIERE"]."' LIMIT 1", $id_sql) ;
	   If (SQL_nbr_lignes ($ens) == 1)
	    {
	     $discipline = SQL_ligne_suivante ($dis) ;
	     // Recherche classe
	     $cls = SQL_commande ("SELECT id_classe,nom_bref FROM classes WHERE nom_bref='".$et ["CODE"]."' LIMIT 1", $id_sql) ;
	     If (SQL_nbr_lignes ($cls) == 1)
	      {
	       $classe = SQL_ligne_suivante ($cls) ;
	       $groupe = 0 ;
	       // Recherche du jour
	       $jr = SQL_commande ("SELECT id_abs_jo FROM abs_jo WHERE numero='".$et ["JOUR"]."' LIMIT 1", $id_sql) ;
	       If (SQL_nbr_lignes ($jr) == 1)
	        {
	         $jour = SQL_ligne_suivante ($jr) ;
		 // Recherche de la salle
		 $sll = SQL_commande ("SELECT id_abs_salle FROM abs_salles WHERE nom='".$et ["CODE_SALLE"]."' LIMIT 1", $id_sql) ;
		 If (SQL_nbr_lignes ($sll) == 1)
	          {
		   $salle = SQL_ligne_suivante ($sll) ;
		   // Recherche validite
		   $val = SQL_commande ("SELECT id_abs_validite FROM abs_validites WHERE code='".$et ["CODE_ALTERNANCE"]."' LIMIT 1", $id_sql) ;
		   If (SQL_nbr_lignes ($val) == 1)
	            {
		     $validite = SQL_ligne_suivante ($val) ;
		     // Recherche des heures
		     $duree = (integer)(SubStr ($et ["DUREE"], 0, 2)*60+SubStr ($et ["DUREE"], 2, 2))*60 ;
		     $debut = SubStr ($et ["HEURE_DEBUT"], 0, 2).":".SubStr ($et ["HEURE_DEBUT"], 2, 2).":00" ;
		     $fin = Date ("H:i:s", MkTime (SubStr ($et ["HEURE_DEBUT"],0,2),SubStr ($et ["HEURE_DEBUT"],2,2),$duree,2,2,2008)) ;
		     $hor = SQL_commande ("SELECT id_abs_horaire FROM abs_horaires WHERE debut>='".$debut."' AND debut <'".$fin."' ORDER BY debut", $id_sql) ;
		     $nbr_hor = SQL_nbr_lignes ($hor) ;
		     For ($j = 0 ; $j < $nbr_hor ; $j++)
		      {
		       $horaire = SQL_ligne_suivante ($hor) ;
		       $test = SQL_commande ("SELECT id_abs_edt FROM abs_edt WHERE discipline='".$discipline [0]."' AND classe='".$classe [0]."' AND abs_groupe='0'
		                              AND jour='".$jour [0]."' AND abs_horaire='".$horaire [0]."' AND abs_salle='".$salle [0]."' AND abs_validite='".$validite [0]."' LIMIT 1", $id_sql) ;
		       If (SQL_nbr_lignes ($test) == 0)
		        {
		         If ($ok == 1) { $requete .= "," ; }
		         $requete .= "('".$enseignant [0]."','".$enseignant [1]."','".$discipline [0]."','".$discipline [1]."','".$classe [0]."','".$classe [1]."'," ;
		         $requete .= "'".$groupe."','".$jour [0]."','".$horaire [0]."','".$salle [0]."','".$validite [0]."')" ;
		         $ok = 1 ;
			}
		       Else
		        {
			 // EDT deja existant
			}
		      }
		    }
		   Else
		    {
		     // Service sans validite
		    }
		  }
		 Else
		  {
		   // Service sans salle enregistree
		  }
		}
	       Else
	        {
		 // Service sans jour renseigne
		}
	      }
	     Else
	      {
	       // Service sans classe
	      }
	    }
	   Else
	    {
	     // Service sans dsicipline
	    }
	  }
	 Else
	  {
	   // Service sans enseignant
	  }
	}
       If ($ok == 1) { $ok = SQL_commande ($requete, $id_sql) ; }
       
       // ================================
       //  Traitement de l'EDT en groupe
       // ================================
       // Recherche des groupes
       $groupes = SQL_commande ("SELECT * FROM ".$sql_sconet."_GROUPES ORDER BY DIV_CODE", $id_sql) ;
       $nbr_groupes = SQL_nbr_lignes ($groupes) ;
       If ($nbr_groupes > 0)
        {
	 $requete = "INSERT INTO abs_groupes_classe (code_groupe,classe,code_classe) VALUES " ;
	 $ok = 0 ;
	 For ($i = 0 ; $i < $nbr_groupes ; $i++)
	  {
	   $groupe = SQL_tableau_associatif ($groupes, "") ;
	   // Recherche de la classe
	   $cls = SQL_commande ("SELECT id_classe,nom_bref FROM classes WHERE nom_bref='".$groupe ["DIV_CODE"]."' LIMIT 1", $id_sql) ;
	   If (SQL_nbr_lignes ($cls) == 1)
	    {
	     $classe = SQL_ligne_suivante ($cls) ;
	     // Doublons
	     $test = SQl_commande ("SELECT id_abs_groupe_classe FROM abs_groupes_classe WHERE code_groupe='".$groupe ["CODE"]."' AND classe='".$classe [0]."' LIMIT 1", $id_sql) ;
	     If (SQL_nbr_lignes ($test) == 0)
	      {
	       If ($ok == 1) { $requete .= "," ; }
	       $requete .= "('".$groupe ["CODE"]."','".$classe [0]."','".$classe [1]."')" ;
	       $ok = 1 ;
	      }
	     Else
	      {
	       // Groupe existe deja
	      }
	    }
	  }
	 If ($ok == 1) { $ok = SQL_commande ($requete, $id_sql) ; }
	 
	 // Insertion EDT en groupe
         $edt = SQL_commande ("SELECT * FROM ".$sql_sconet."_GROUPES_SERVICES ORDER BY CODE,JOUR,HEURE_DEBUT", $id_sql) ;
         $nbr_edt = SQL_nbr_lignes ($edt) ;
         $requete = "INSERT INTO abs_edt (professeur,numen_prof,discipline,code_disc,classe,code_classe,abs_groupe,jour,abs_horaire,abs_salle,abs_validite) VALUES " ;
         $ok = 0 ;
         For ($i = 0 ; $i < $nbr_edt ; $i++)
          {
	   $et = SQL_tableau_associatif ($edt, "") ;
           // Recherche enseignants
	   $ens = SQL_commande ("SELECT id_utilisateur,numen FROM utilisateurs WHERE numen='".$et ["ENSEIGNANT_TYPE"].$et ["ENSEIGNANT_ID"]."' LIMIT 1", $id_sql) ;
	   If (SQL_nbr_lignes ($ens) == 1)
	    {
	     $enseignant = SQL_ligne_suivante ($ens) ;
	     // Recherche discipline
	     $dis = SQL_commande ("SELECT id_discipline,code FROM disciplines WHERE code='".$et ["CODE_MATIERE"]."' LIMIT 1", $id_sql) ;
	     If (SQL_nbr_lignes ($ens) == 1)
	      {
	       $discipline = SQL_ligne_suivante ($dis) ;
	       // Recherche classe et groupe
	       $cls = SQL_commande ("SELECT classe,code_classe,id_abs_groupe_classe FROM abs_groupes_classe WHERE code_groupe='".$et ["CODE"]."' LIMIT 1", $id_sql) ;
	       If (SQL_nbr_lignes ($cls) == 1)
	        {
	         $classe = SQL_ligne_suivante ($cls) ;
	         // Recherche du jour
	         $jr = SQL_commande ("SELECT id_abs_jo FROM abs_jo WHERE numero='".$et ["JOUR"]."' LIMIT 1", $id_sql) ;
	         If (SQL_nbr_lignes ($jr) == 1)
	          {
	           $jour = SQL_ligne_suivante ($jr) ;
		   // Recherche de la salle
		   $sll = SQL_commande ("SELECT id_abs_salle FROM abs_salles WHERE nom='".$et ["CODE_SALLE"]."' LIMIT 1", $id_sql) ;
		   If (SQL_nbr_lignes ($sll) == 1)
	            {
		     $salle = SQL_ligne_suivante ($sll) ;
		     // Recherche validite
		     $val = SQL_commande ("SELECT id_abs_validite FROM abs_validites WHERE code='".$et ["CODE_ALTERNANCE"]."' LIMIT 1", $id_sql) ;
		     If (SQL_nbr_lignes ($val) == 1)
	              {
		       $validite = SQL_ligne_suivante ($val) ;
		       // Recherche des heures
		       $duree = (integer)(SubStr ($et ["DUREE"], 0, 2)*60+SubStr ($et ["DUREE"], 2, 2))*60 ;
		       $debut = SubStr ($et ["HEURE_DEBUT"], 0, 2).":".SubStr ($et ["HEURE_DEBUT"], 2, 2).":00" ;
		       $fin = Date ("H:i:s", MkTime (SubStr ($et ["HEURE_DEBUT"],0,2),SubStr ($et ["HEURE_DEBUT"],2,2),$duree,2,2,2008)) ;
		       $hor = SQL_commande ("SELECT id_abs_horaire FROM abs_horaires WHERE debut>='".$debut."' AND debut <'".$fin."' ORDER BY debut", $id_sql) ;
		       $nbr_hor = SQL_nbr_lignes ($hor) ;
		       For ($j = 0 ; $j < $nbr_hor ; $j++)
		        {
		         $horaire = SQL_ligne_suivante ($hor) ;
		         $test = SQL_commande ("SELECT id_abs_edt FROM abs_edt WHERE discipline='".$discipline [0]."' AND classe='".$classe [0]."' AND abs_groupe='".$classe [2]."'
		                                AND jour='".$jour [0]."' AND abs_horaire='".$horaire [0]."' AND abs_salle='".$salle [0]."' AND abs_validite='".$validite [0]."' LIMIT 1", $id_sql) ;
		         If (SQL_nbr_lignes ($test) == 0)
		          {
		           If ($ok == 1) { $requete .= "," ; }
		           $requete .= "('".$enseignant [0]."','".$enseignant [1]."','".$discipline [0]."','".$discipline [1]."','".$classe [0]."','".$classe [1]."'," ;
		           $requete .= "'".$classe [2]."','".$jour [0]."','".$horaire [0]."','".$salle [0]."','".$validite [0]."')" ;
		           $ok = 1 ;
			  }
		        }
		      }
		     Else
		      {
		       // Service sans validite
		      }
		    }
		   Else
		    {
		     // Service sans salle enregistree
		    }
		  }
	         Else
	          {
	  	   // Service sans jour renseigne
	  	  }
	        }
	       Else
	        {
	         // Service sans classe
	        }
	      }
	     Else
	      {
	       // Service sans dsicipline
	      }
	    }
	   Else
	    {
	     // Service sans enseignant
	    }
	  }
         If ($ok == 1) { $ok = SQL_commande ($requete, $id_sql) ; }
	}

       // FIN d'Insertion
      }
     Else
      {
       // Pas d'annee connue
      }
    }
   Else
    {
     // Pas d'etablissement connu
    }
  }
 Else
  {
   // Pas de groupes -> Pas d'edt
  }
 
 // Destruction des tables XML temporaires
 For ($i = 1 ; $i <= $table [0] ; $i++)
  {
   $ok = SQL_commande ("DROP TABLE ".$table [$i], $id_sql) ;
  }

 $resultats = SQL_commande ("SELECT * FROM menus WHERE numero='".$droit_courant."' AND ordre='0'", $id_sql) ;
 $l = SQL_tableau_associatif ($resultats, "") ; 
 Echo "<HTML><HEAD>" ;
 entete_html ("Garennes", "travail", 1) ;
 Echo styles ("none", "none", "none", $l ["lien"], "none") ;
 Echo "</HEAD>" ;
 
 Echo "<BODY BACKGROUND=\"../images/fond.png\" TEXT=\"#000000\" onContextMenu=\"return false\">" ;
 Echo "<CENTER><FONT COLOR=\"#0000FF\">Mise&nbsp;place&nbsp;du&nbsp;module&nbsp;ABSENCES&nbsp;:&nbsp;Insertion&nbsp;d'une&nbsp;base&nbsp;provenant&nbsp;de&nbsp;GEP&nbsp;(3/3)&nbsp;</FONT></CENTER>" ;
 Echo "<TABLE BORDER=\"1\" BGCOLOR=\"".$l ["couleur_fond"]."\" CELLPADDING=\"0\" CELLSPACING=\"0\" ALIGN=\"CENTER\" STYLE=\"border:1px solid #000000;border-collapse:collapse\">" ;
 Echo "<TR><TD>" ;
 Echo "<TABLE BORDER=\"0\" CELLPADDING=\"0\" CELLSPACING=\"0\" WIDTH=\"100%\" STYLE=\"border-collapse:collapse\">" ;
 Echo "<TR><TD COLSPAN=\"2\">" ;
 Echo "<BR><CENTER>&nbsp;Importation de l'emploi du temps au format XML effectu&eacute;e&nbsp;</CENTER><BR><BR>" ;
 Echo "&nbsp;Vous pouvez utiliser le module ABSENCES&nbsp;<BR>&nbsp;" ;
 Echo "</TD></TR></TABLE>" ;
 Echo "</TD></TR></TABLE>" ;
 Echo "</BODY></HTML>" ;
?>